草庐IT

Java MVC - 感觉我不明白

全部标签

c++ - 转换重载函数不明确

我有一个问题,即创建指向重载函数的函数指针会导致g++4.7和g++4.8上的编译错误,但在g++4.4、g++4.6或clang++3.2(可能还有VS2010)上不会。我在谷歌上搜索了一下,想知道问题出在g++还是我的代码上,但我仍然无法决定。适用于函数指针转换的重载决议规则与适用于函数调用的重载决议规则是否不同?这是演示问题的最小化代码:templatestructDummy{typedefTvalue_type;value_typevalue;};templatetypenameT::value_typef(constT&x){returnx.value;}templateTf

c++ - 关于模板声明中声明的措辞不明确

14/1[temp]提供:Thedeclarationinatemplate-declarationshall(1.1)—declareordefineafunction,aclass,oravariable,or(1.2)—defineamemberfunction,amemberclass,amemberenumeration,orastaticdatamemberofaclasstemplateorofaclassnestedwithinaclasstemplate,or(1.3)—defineamembertemplateofaclassorclasstemplate,or(1

c++ - 多重继承引起的C++拷贝构造函数调用不明确

我在执行某项任务时遇到了问题,这是一个练习,而不是一个真正的程序。任务是定义结构D的复制构造函数,其行为方式与编译器生成的复制构造函数完全相同。classOb{};structA{Oba;};structB:A{Obb;};structC:A,B{Obc;};structD:C,A{Obd;};如您所见,结构A在结构D中间接派生了几次,这导致了复制构造函数定义中的歧义,如下所示:D(constD&_d):C(_d),A(_d),d(_d.d){}我的问题是如何正确定义复制构造函数?没有上述定义的代码编译通过,所以看起来应该是可以的。MinGW4.8.1错误信息:zad3.cpp:12:

c++ - 不明确的引用和命名空间(来自两个外部库的定义冲突)

我经历了我无法理解的定义的崩溃。问题的示意图如下:主项目文件有两个包含:includeinclude第一个header包括库中的其他几个header,其中一个header有一个直接的(未覆盖namespace)定义:templateclassSparseMatrix;lib2.h里面有如下内容namespacelib2{usingnamespacelib3;class...{...SparseMatrix......}}在lib3里面,覆盖着命名空间,还有一个SparseMatrix类的定义。每个库单独编译没有问题。当我尝试编译使用的可执行文件时,编译器产生错误:lib2.h:70:7

c++ - QT - QAction::eventFilter:不明确的快捷方式重载

在这里和其他类似qtcentre的地方搜索我看到这个问题已经出现但似乎无法让它工作。我有一个带有QSplitter的MainWindow小部件,它包含两个Pane小部件(从QFrame子类化)。每个Pane都有一个菜单栏,其中包含相同的相关QActions/Shortcuts。我已经尝试了ShortcutContexts与setShortcutContext()的所有组合。WindowShortcut和ApplicationShortcut上下文给出了预期的“不明确的快捷方式过载”。虽然WidgetShortcut和WidgetWithChildrenShortcut都什么都不做。如果

c++ - 非常简单的代码,出现错误 C2712,不明白为什么

errorC2712:Cannotuse__tryinfunctionsthatrequireobjectunwinding我遇到了一段时间的麻烦,在缩小问题范围后,我只剩下一个非常非常简单的代码,我可以不明白为什么会导致这个错误。我在Windows下使用VisualStudio。我正在使用/EHa进行编译(我不使用/EHsc)我使用__try/__except而不是try/catch的原因是因为我想捕获所有错误,并且不希望程序在任何情况下崩溃,包括例如除以0,try-catch不会捕获。#includestaticstructmyStruct{staticstd::stringfoo

c++ - 编译器不会为 "const"和 "not-const"函数给出不明确的错误

我在C++结构中重载了const和non-const函数。然后,我运行了该程序,我想知道它运行良好,没有出现模棱两可的错误。#includestructSt{intf()const{return1;}intf(){return2;}}s;intmain(){intret=s.f();std::cout所以,我只是想知道,为什么编译器不对“const”和“not-const”函数给出模棱两可的错误? 最佳答案 这是constoverloading,即athing在C++中。在这种情况下,编译器确定该结构没有重载函数返回类型(当然是di

c++ - 我不明白为什么 'Derived1' 需要与 'Derived3' 相同的内存量

在下面的代码中,我不明白为什么“Derived1”需要与“Derived3”相同的内存量。另外Derived4的size为16有没有什么特殊意义。#includeusingnamespacestd;classEmpty{};classDerived1:publicEmpty{};classDerived2:virtualpublicEmpty{};classDerived3:publicEmpty{charc;};classDerived4:virtualpublicEmpty{charc;};classDummy{charc;};intmain(){cout这段代码的输出是:size

c++ - 解决 operator[] 的不明确重载

我有这门课:classMyClass{public:intoperator[](conststd::string&);conststd::string&operator[](constint&)const;...};但是,如果我调用带有const文字0的第二个运算符,它会非常有用:MyClassmyclass;std::cout我遇到了这个错误:Infunction'intmain()':ambiguousoverloadfor'operator[]'in'myclass[0]'note:candidatesare:note:constintMyClass::operator[](co

C++0x 错误:将带有 std::shared_ptr 的函数重载为 const 参数不明确

假设我有两个不相关类A和B。我还有一个类Bla使用boost::shared_ptr像这样:classBla{public:voidfoo(boost::shared_ptr);voidfoo(boost::shared_ptr);}注意const。这是这个问题的原始版本缺少的重要部分。这编译,下面的代码工作:Blabla;boost::shared_ptra;bla.foo(a);但是,如果我在上述示例中从使用boost::shared_ptr切换到使用std::shared_ptr,我会收到如下编译错误:"error:callofoverloaded'foo(std::shared